home *** CD-ROM | disk | FTP | other *** search
- #ifndef _FDMPROTO_H_
- #define _FDMPROTO_H_
-
- /*
- * Zur direkten Unterstützung von Freedom gibt es 2 Möglichkeiten, bei
- * beiden wird in dem Speicherbereich, auf den fs_iinpath beim fsel_[ex]input
- * Aufruf deutet, zusätzlich zum Pfad eine Struktur übergeben.
- * Die Vorgehensweise ist denkbar einfach: Hat man vorher 128 Bytes für den
- * Pfad reservieren müssen, sind es jetzt 128+sizeof(Fdm_Str).
- * In diesen Speicher (um globale Lesbarkeit unter MiNT müssen Sie sich nicht
- * kümmern) wird die folgende Struktur kopiert, direkt dahinter der Pfad-
- * String. Der Pfad wird also nur um sizeof(Fdm_Str) nach hinten verschoben.
- * Dannach können Sie zwei Wege beschreiten:
- *
- * 1. Übergeben Sie einfach einen Zeiger auf diesen Speicherbereich in
- * fs_iinpath. Durch den Magic am Anfang erkennt Freedom sofort, das der
- * Aufrufer das Protokoll unterstützen will. Diese Methode hat den Nachteil,
- * daß Sie sie für den unwahrscheinlichen Fall, das Freedom nicht installiert
- * ist ;-), nicht anwenden können. Sie müssen also im Cookiejar nachsehen, ob
- * ein FSEL-Cookie mit Version >= 2.00 vorhanden ist (s. SLECTRIC.H)
- *
- * 2. Übergeben Sie einen Zeiger auf den Pfad hinter der Struktur. Das versteht
- * auch jeder andere Fileselektor, Sie brauchen also nicht im Cookie nachzu-
- * sehen, ob Freedom vielleicht nicht installiert ist. Freedom könnte ja nun
- * einfach sizeof(Fdm_Str) vor dem übergebenen Pointer nachsehen, ob der Magic
- * da zufällig steht, gäbe es da nicht MiNT mit aktivem Speicherschutz. Deshalb
- * müssen Sie bei dieser Methode Freedom noch einen Hinweis geben, daß er
- * gefahrlos auf den Speicher vor dem Pfad zugreifen darf: Findet Freedom
- * hinter dem Nullbyte des Pfades die vier Zeichen "?Fdm" (dasselbe Magic wie
- * in der Struktur erwartet wird), dann kuckt es vor dem Pfad nach, ob sich die
- * Struktur dort befindet. Und jetzt (Gnade.. .-)): die Struktur:
- */
- typedef struct
- {
- long magic; /* '?Fdm' */
- int id; /* Beliebige Id */
- int maxsel; /* Maximale Anzahl von zu selektierenden Files */
- struct
- {
- unsigned fullpaths : 1; /* volle Pfadnamen in der Antwort */
- unsigned doquote : 1; /* Freedom darf quoten */
- unsigned noname : 1; /* keinen Appl.-Namen vor Titel */
- unsigned sysmodal : 1; /* System-Modal öffnen (örgs..) */
- unsigned resvd : 28; /* reserviert (auf 0 setzen) */
-
- } flags;
- int handle; /* Enthält nach Erfolg das Fensterhandle des
- Fileselektors (bzw. 0 bei einem fliegenden
- Dialog). Sinn: Das aufrufende Programm kann den
- Fileselektor kontrollieren, indem es etwa eine
- WIN_CLOSED-Nachricht dafür an Freedom sendet, oder
- das Fenster in sein Window-Cycle mit einbezieht.
- */
- int server; /* Enthält nach Erfolg die Appl.-Id des
- Fileselektor-Servers. An ihn können Nachrichten
- bzgl. des Fensters 'handle' gesendet werden.
- */
- char path[0]; /* jetzt kommt der der Pfad.. */
-
- } Fdm_Str;
-
- /*
- * kehrt fsel_input zurück, und in der Struktur steht im 'magic'
- * dann ein '!Fdm', war der Aufruf erfolgreich, anderenfalls wurde
- * der Aufruf an das OS weitergeleitet, und die Rückgabewerte
- * (fs_iinpath, fs_iinsel, fs_iexbutton) sind gültig!
- *
- * Bei erfolgreichem Aufruf kann die Applikation sich einer Antwort
- * in Form einer AES-Nachricht sicher sein. Ob die Applikation weiterläuft
- * oder in einer Sub-Eventloop auf die Antwort wartet, in der Sie sonst
- * und nur WM_REDRAW und Co. bearbeitet, bleibt ihr überlassen. Am schönsten
- * wäre natürlich, wenn ein Weiterarbeiten ermöglicht wird.
- *
- * Das Format der AES-Antwort-Nachricht ist:
- *
- * FILE_SELECTED: Ein Fileselektor wurde geschlossen:
- * Word 3: Id des Fileselektors (wie bei fsel_[ex]input angegeben)
- * Word 4/5: Zeiger auf Pfad und Extension zum Zeitpunkt
- * des Schließens
- * Word 6/7: Zeiger auf die ausgewählten Files, oder NULL, falls
- * der Benutzer Abbruch betätigt hat
- * Die Files sind durch Spaces getrennt, und enthalten
- * je nach den Angaben beim Aufruf volle Pfade bzw.
- * auch Quotes ('Chrisker''s Briefbeschwerer')
- */
- #ifndef FILE_SELECTED
- #define FILE_SELECTED 0x4560
- #endif
- /*
- * In den dem Empfang dieser Nachricht folgenden 10 Sekunden kann das
- * Programm gefahrlos auf den (MiNT-globalen) Speicher, auf die Wörter
- * 3/4 bzw. 6/7 weisen, zugreifen, und die Daten kopieren. Dannach
- * übergibt Freedom den Speicher wieder an das GEMDOS (Mfree)!
- *
- *
- * Sollen Nachrichten an den Server gesendet werden, sollte man statt der
- * Standard Screenmgr-Nachrichten WM_TOPPED und WM_CLOSED die folgenden
- * Nachrichten-Nummern verwenden. Bei den normalen Nachrichten passiert
- * nämlich uU was anderes, als man erwartet. Etwa wird der Fileselektor
- * ICFS-Ikonifiziert, wenn gerade eine Umschalttaste festgehalten wird
- * (WM_CLOSED), oder es wird stattdessen das Objekt unter der Maus bedient,
- * weil in Freedom die Simulation von Hintergrundbedienung (WM_TOPPED) unter
- * SingelTOS aktiviert ist.
- */
- #ifndef WIN_TOPPED
- #define WIN_TOPPED 0x7a22
- #endif
- #ifndef WIN_CLOSED
- #define WIN_CLOSED 0x7a23
- #endif
-
- #endif /* _FDMPROTO_H_ */
-